home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-05-26 | 2.3 KB | 90 lines | [TEXT/ZBAS] |
- '
- '∑∑∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ∑∑∑
- 'Equates
- '∑∑∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ∑∑∑
-
- DIM T,L,B,R:' Generic rectangle
- '
- ' --------------------------------------------- For off-screen bitmaps
- DIM BitMap&,RowBytes,MapT,MapL,MapB,MapR
- '
- True = NOT(False)
-
- '⁄€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€
-
- LONG FN KillPort(Port&)
- OSErr = FN DISPOSPTR(PEEK LONG(Port&+2))
- CALL CLOSEPORT(Port&)
- OSErr = FN DISPOSPTR(Port&)
- END FN
-
- '⁄€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€
-
- LONG FN MakePort
- CALL GETPORT(OnScreen&) :' get current port
- BLOCKMOVE OnScreen&+16,VARPTR(MapT),8 :' get the port's rect
- MemAvail& = FN FREEMEM
- RowBytes = (( MapR+15)/8+1) AND &7FFE
- NumRows = MapB-MapT
- BMapSz& = RowBytes * NumRows
- LONG IF BMapSz& < MemAvail& + 25000
- BitMap& = FN NEWPTR(BMapSz&)
- OffScreen& = FN NEWPTR(108) :'size of a grafport
- CALL OPENPORT(OffScreen&) :'calls setport internally
- CALL SETPORTBITS(BitMap&)
- CALL ERASERECT(MapT)
- CALL SETPORT(OnScreen&)
- QDErr = False
- XELSE
- QDErr = True
- END IF
- END FN = QDErr
- '
- '⁄€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€
-
- '
- ' this must be compiled to an app to work on a print spooler.
- '
- WINDOW OFF:COORDINATE WINDOW
- DEF MOUSE=-1:CURSOR 4:WIDTH -2
- '
- WINDOW 1,"OffScreen Print Test",(30,40)-(480,320),17
- CALL MOVETO(20,20)
- CALL LINETO(100,100)
- PEN 1,1,1,8,0
- PRINT:PRINT
- PRINT "Press RETURN to bring offscreen data onscreen."
- '
- QDErr = FN MakePort:' makes on offscreen grafport called OffScreen&
- LONG IF NOT QDErr
- CALL SETPORT(OffScreen&)
- CALL MOVETO(20,20)
- CALL DRAWSTRING("This is offscreen for now.")
- T = 200 : L = 200 : B = 250 : R = 300
- PEN 1,1,1,8,0
- CALL PAINTRECT(T)
- '
- CALL SETPORT(OnScreen&)
- INPUT " ";R$
- CALL COPYBITS(#OffScreen&+2,#OnScreen&+2,MapT,MapT,8,0)
- PRINT%(20,260)"Press RETURN to print offscreen data.";
- INPUT R$
- '
- DEF PAGE
- LONG IF NOT PRCANCEL
- DEF LPRINT
- LONG IF NOT PRCANCEL
- ROUTE 128
- CALL GETPORT(PrPort&)
- CALL COPYBITS(#OffScreen&+2,#PrPort&+2,MapT,MapT,0,0)
- ROUTE 0
- CLOSE LPRINT
- END IF
- END IF
- FN KillPort (OffScreen&)
- END IF
- END
-
-
-
-